package org.mendoza.salud.hvt.client.local.gui.mywidgets;

import org.gwtbootstrap3.client.ui.ListBox;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;

/**
 * Created by administrador on 06/01/15.
 */
public class MyListBox<T> extends ListBox {
    public MyListBox() {
    }

    public List<T> objetos;
    public LinkedHashMap<String, T> mapa;

    public T getSelected() {
        return mapa.get(this.getSelectedValue());
    }

    private void sync() {
        if (objetos != null) {
            if (mapa==null) mapa = new LinkedHashMap<String, T>();
            mapa.clear();
            for (T t : objetos) {
                mapa.put(String.valueOf(t.hashCode()), t);
            }
            fill();
        }
    }

    private void fill() {
        this.clear();
        for (String hash : mapa.keySet()) {
            this.addItem(mapa.get(hash).toString(), hash);
        }
    }

    public List<T> getObjetos() {
        return objetos;
    }

    public void setObjetos(List<T> objetos) {
        this.objetos = objetos;
        sync();
    }

    public void addObjeto(T t) {
        objetos.add(t);
        sync();
    }

    public void removeObjeto(T t) {
        objetos.remove(t);
    }
}
